/**  
 * @Title: DataOperateUtil.java
 * @Package com.atm.util
 * @author 姜向阳
 * @date 2018年3月13日
 * @version V1.0  
 */
package com.atm.util;

import java.util.ArrayList;
import java.util.List;

import com.atm.constants.Constants;
import com.atm.entity.Card;

/**
 * @ClassName: DataOperateUtil
 * @Description: 银行卡数据操作工具类
 * @author 姜向阳
 * @date 2018年3月13日
 * @since JDK 1.8
 */
public class DataOperateUtil {

	private static DataOperateUtil dataOperateUtil = new DataOperateUtil();

	private static List<Card> cards = new ArrayList<Card>();

	private DataOperateUtil() {

	}

	/**
	 * @return dataOperateUtil
	 */
	public static DataOperateUtil getDataOperateUtil() {
		return dataOperateUtil;
	}

	/**
	 * 
	 * @Title: readCardData
	 * @Description: 读取数据方法
	 * @param cardID
	 *            银行卡编码
	 * @return Card 银行卡对象
	 */
	public Card readCardData(String cardID) {
		
		//循环card数组
		for (int i = 0; i < cards.size(); i++) {
			Card temp = cards.get(i);
			
			//判断参数cardID与数组中存储cardID是否相等，相等则说明银行卡存在
			if (cardID.equals(temp.getCardID())) {

				return temp;
			}
		}
		
		//循环结束，则说明当前参数cardID在数组中不存在，则返回空
		return null;
	}

	/**
	 * 
	 * @Title: writeCardData
	 * @Description: 写入数据方法
	 * @param card  银行卡对象
	 * @return String 成功：success，失败：error
	 */
	public String writeCardData(Card card) {
		
		//循环card数组
		for (int i = 0; i < cards.size(); i++) {
			Card temp = cards.get(i);
			
			//判断参数cardID与数组中存储cardID是否相等，相等则说明银行卡存在，则赋值更新card值
			if (card.getCardID().equals(temp.getCardID())) {
				temp = card;
				return Constants.MSG_SUCCESS;
			}
		}
		//循环结束，则说明当前参数cardID在数组中不存在，则添加新card
		cards.add(card);
		return Constants.MSG_SUCCESS;
	}

}
